package cn.iocoder.yudao.module.pay.bill.api;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.api.pay.bill.PayBillApi;
import cn.iocoder.yudao.module.api.pay.bill.dto.PayBillCreateDTO;
import cn.iocoder.yudao.module.api.pay.bill.dto.PayBillPageDTO;
import cn.iocoder.yudao.module.api.pay.bill.dto.PayBillRespDTO;
import cn.iocoder.yudao.module.pay.bill.convert.PayBillConvert;
import cn.iocoder.yudao.module.pay.bill.service.PayBillService;
import cn.iocoder.yudao.module.pay.bill.vo.AppPayBillPageReqVO;
import cn.iocoder.yudao.module.pay.bill.vo.AppPayBillRespVO;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;

/**
 * <pre>
 * OOoO0OOoO0OOOooo0oOOOO0OOOOO0oooOO0ooOOO0Ooooo0OOOOo0ooooO0OOooo0Ooooo0OOOOO
 *  账单流水实现
 * OOoO0OOoO0OOOooo0oOOOO0OOOOO0oooOO0ooOOO0Ooooo0OOOOo0ooooO0OOooo0Ooooo0OOOOO
 * </pre>
 *
 * @author 山野羡民（1032694760@qq.com）
 * @since 2024/12/17
 */
@Service
public class PayBillApiImpl implements PayBillApi {
    @Resource
    private PayBillService payBillService;

    @Override
    public boolean exists(Long userId, String relateId) {
        return payBillService.exists(userId, relateId);
    }

    @Override
    public void expendAsync(PayBillCreateDTO dto) {
        payBillService.expendAsync(dto.getUserId(), dto.getCategory(), dto.getType(),
                dto.getNumber(), dto.getMark(), dto.getRelateId(), dto.getExtendField());
    }

    @Override
    public void incomeAsync(PayBillCreateDTO dto) {
        payBillService.incomeAsync(dto.getUserId(), dto.getCategory(), dto.getType(),
                dto.getNumber(), dto.getMark(), dto.getRelateId(), dto.getExtendField());
    }

    @Override
    public PageResult<PayBillRespDTO> getBillPage(Long userId, PayBillPageDTO reqVO) {
        AppPayBillPageReqVO pageVO = PayBillConvert.INSTANCE.convert(reqVO);
        PageResult<AppPayBillRespVO> page = payBillService.getBillPage(userId, pageVO);
        return PayBillConvert.INSTANCE.convertPage3(page);
    }

}
